// tab导航页插件
(function($) {
	var defaults = {
			headId: 'layadmin-tab-header', // 头部节点ID
			contentId: 'layadmin-tab-content' // 内容节点ID
		},
		head_element, // 头部区域对象
		content_element, // 内容区域对象
		_self;

	$.fn.layuiNavTab = {
		// 初始化
		init: function(options) {
			$.extend(true, defaults, options);
			if (self.frameElement && self.frameElement.tagName == "IFRAME") {
				if (parent.frameElement && parent.frameElement.tagName == "IFRAME") {
					if (parent.parent.frameElement && parent.parent.frameElement.tagName == "IFRAME") {
						head_element = $('#' + defaults.headId, parent.parent.parent.document);
						content_element = $('#' + defaults.contentId, parent.parent.parent.document);
					} else {
						head_element = $('#' + defaults.headId, parent.parent.document);
						content_element = $('#' + defaults.contentId, parent.parent.document);
					}
				} else {
					head_element = $('#' + defaults.headId, parent.document);
					content_element = $('#' + defaults.contentId, parent.document);
				}
			} else {
				head_element = $('#' + defaults.headId);
				content_element = $('#' + defaults.contentId);
			}
			_self = this;
			return _self;
		},
		// 添加tab页
		addTab: function(tab_options) {
			var tab_option = {
				id: '', // 节点ID
				url: '', // 内容URL
				title: '', // 标题
				canClose: true, // 是否可以关闭
				iconClass: '', // 图标样式
				parentFrameId: ''
			};
			$.extend(true, tab_option, tab_options);
			// 默认ID = url
			if (tab_option.id == '') {
				tab_option.id = tab_options.url;
			}
			if (head_element.find('li[data-id="' + tab_option.id + '"]').length > 0) {
				_self.showTab(tab_option.id);
			} else {
				// tab标题HTML
				var tab_head_html = '<li data-id="' + tab_option.id + '" class="layui-this">';
				if (tab_option.iconClass != '') {
					tab_head_html += '<i class="' + tab_option.iconClass + '"></i>';
				}
				if (tab_option.title != '') {
					tab_head_html += '<span>' + tab_option.title + '</span>';
				}
				if (tab_option.canClose) {
					tab_head_html += '<i class="layui-icon layui-unselect layui-tab-close">&#x1006;</i>';
				}
				tab_head_html += '</li>';
				var tab_head_element = $(tab_head_html);
				// tab标签点击事件
				tab_head_element.click(function(event) {
					_self.clickTab(tab_option.id);
				});
				// tab关闭按钮事件
				tab_head_element.find('.layui-tab-close').click(function(event) {
					_self.destroyTab(tab_option.id);
				});
				head_element.find('.layui-this').removeClass('layui-this');
				head_element.append(tab_head_element);

				// tab内容
				content_element.children('.layui-show').removeClass('layui-show');
				var tab_content_inner_element = $('<div class="layadmin-tabsbody-item layui-show" data-id="' + tab_option.id + '"></div>');
				var frameId = 'frame-' + new Date().getTime();
				// var iframe = '<iframe id="' + frameId + '" src="home/console.html" frameborder="0" class="layadmin-iframe"></iframe>';
				var iframe = $('<iframe frameborder="0" class="layadmin-iframe"></iframe>');
				iframe.attr('id', frameId);
				iframe.attr('parentFrameId', tab_option.parentFrameId);

				tab_content_inner_element.append(iframe);
				content_element.append(tab_content_inner_element);

				layui.use(['layer'], function(exports) {
					var layer = layui.layer
					layer.ready(function() {
						var navLoadIndex = layer.load(1, {
							shade: [0.1, '#fff']
						});
						iframe.load(function() {
							if (navLoadIndex != null) {
								layer.close(navLoadIndex);
								navLoadIndex = null;
							}
						});
						iframe.prop('src', tab_option.url + "?t=" + new Date().getTime());
					});
				});
			}
			_self.rollTab('auto');
		},
		// 显示tab页
		showTab: function(id) {
			head_element.find('.layui-this').removeClass('layui-this');
			head_element.find('li[data-id="' + id + '"]').addClass('layui-this');
			content_element.children('.layui-show').removeClass('layui-show');
			content_element.find('div[data-id="' + id + '"]').addClass('layui-show');
			_self.rollTab('auto');
		},
		// 根据frame id显示tab页
		showTabByFrameId: function(frameId) {
			var frame = content_element.find('#' + frameId);
			if (frame) {
				var id = frame.parent('.layadmin-tabsbody-item').data('id');
				_self.showTab(id);
			}
		},
		// 销毁指定id的tab页
		destroyTab: function(id, showNext) {
			head_element.find('li[data-id="' + id + '"]').remove();
			content_element.find('div[data-id="' + id + '"]').remove();
			var last_element = head_element.find('li:last');
			var last_element_id = last_element.data('id');
			if (typeof(showNext) == 'undefined' || showNext) {
				_self.showTab(last_element_id);
			}
		},
		// 销毁当前tab页
		destroyThisTab: function() {
			var thisTab = head_element.find('.layui-this');
			if (thisTab.find('.layui-tab-close').length == 1) {
				_self.destroyTab(thisTab.data('id'));
			}
		},
		// 销毁其他tab页
		destroyOtherTab: function() {
			var otherTab = head_element.find('li').not('.layui-this');
			if (otherTab.length > 0) {
				otherTab.each(function(index, el) {
					if ($(el).find('.layui-tab-close').length == 1) {
						_self.destroyTab($(el).data('id'));
					}
				});
			}
		},
		// 销毁全部tab页
		destroyAllTab: function() {
			var allTab = head_element.find('li');
			if (allTab.length > 0) {
				allTab.each(function(index, el) {
					if ($(el).find('.layui-tab-close').length == 1) {
						_self.destroyTab($(el).data('id'));
					}
				});
			}
		},
		// 刷新tab页并显示
		flushTabByFrameId: function(frameId, subFrameId) {
			var frame = content_element.find('#' + frameId);
			if (frame) {
				if(subFrameId) {
					var subFrame = frame.contents().find("#page_frame");
					if(subFrame) {
						subFrame.attr('src', subFrame.attr('src'));
					}
				} else {
					frame.attr('src', frame.attr('src'));
				}
			}
		},
		// tab页点击事件
		clickTab: function(id) {
			_self.showTab(id);
		},
		// 滚动tab页
		rollTab: function(type) {
			// tab总宽度
			var scrollWidth = head_element.prop("scrollWidth");
			// tab可视区域宽度
			var outerWidth = head_element.outerWidth();
			// 移动的距离
			var move_range = 0;
			// 左侧已隐藏的距离
			var left = Math.abs(head_element.position().left - 40);

			// 左移
			if (type == 'left') {
				if (left > 0) {
					if (left > outerWidth) {
						head_element.css('left', (left - outerWidth) * -1);
					} else {
						head_element.css('left', 0);
					}
				}
				// 右移
			} else if (type == 'right') {
				if (scrollWidth - left > outerWidth) {
					var hide_width = 0;
					head_element.find('li').each(function(index, el) {
						if (hide_width >= left) {
							if (move_range + $(el).outerWidth() > outerWidth) {
								return false;
							} else {
								move_range += $(el).outerWidth();
							}
						} else {
							hide_width += $(el).outerWidth();
						}
					});
					head_element.css('left', (move_range + left) * -1);
				}
				// 自动定位
			} else {
				head_element.find('li').each(function(index, el) {
					// debugger
					move_range += $(el).outerWidth();
					if ($(el).hasClass('layui-this')) {
						if (move_range - left < $(el).outerWidth()) {
							head_element.css('left', (move_range - $(el).outerWidth()) * -1);
						} else if (move_range - left > outerWidth) {
							head_element.css('left', (move_range - outerWidth) * -1);
						}
					}
				});
			}
		}
	}
})(jQuery);

// 切换主导航菜单
$('#nav-menu dd').click(function(event) {
	var $this = $(this);
	if ($('#nav-default-menu').attr('data-menu-id') != $this.attr('data-menu-id')) {
		var menu_id = $this.attr('data-menu-id');
		$('ul.layui-nav-tree').hide();
		$('#menu-' + menu_id).show();
		$('#nav-default-menu').attr('data-menu-id', menu_id);
		$('#nav-default-menu').find('span').html($this.data('name'));
		$('#nav-default-menu').find('i').attr('class', $this.find('i').attr('class'));
	}
	$this.removeClass('layui-this');
	$this.parent('dl').removeClass('layui-show');
});

// 刷新按钮
$('#frame-refresh-tab').click(function(event) {
	if ($('.layadmin-tabsbody-item.layui-show')) {
		var iframe = $('.layadmin-tabsbody-item.layui-show').children('.layadmin-iframe');
		if (iframe) {
			var layer = layui.layer
			var navLoadIndex = layer.load(1, {
				shade: [0.1, '#fff']
			});
			iframe.load(function() {
				if (navLoadIndex != null) {
					layer.close(navLoadIndex);
					navLoadIndex = null;
				}
			});
			var src = iframe.attr('src');
			// if(src.indexOf("?") > 0 ) {
			// 	src += '&t=' + new Date().getTime();
			// } else {
			// 	src += '?t=' + new Date().getTime();
			// }
			iframe.attr('src', src);
		}
	}
});

// 导航栏处理 —— 开始
// 导航栏初始化
var navtab = $.fn.layuiNavTab.init();

// 导航栏左移按钮
$('#left-move-tab').click(function(event) {
	navtab.rollTab('left');
});
// 导航栏右移按钮
$('#right-move-tab').click(function(event) {
	navtab.rollTab('right');
});
// 导航栏关闭当前按钮
$('#close-this-tab').click(function(event) {
	$(this).parent('.layui-nav-child').removeClass('layui-show');
	$(this).removeClass('layui-this');
	navtab.destroyThisTab();

});
// 导航栏关闭其他按钮
$('#close-other-tab').click(function(event) {
	$(this).parent('.layui-nav-child').removeClass('layui-show');
	$(this).removeClass('layui-this');
	navtab.destroyOtherTab();
});
// 导航栏关闭全部按钮
$('#close-all-tab').click(function(event) {
	$(this).parent('.layui-nav-child').removeClass('layui-show');
	$(this).removeClass('layui-this');
	navtab.destroyAllTab();
});
// 导航栏处理 —— 结束

// app_flexible
$('#app_flexible').click(function(event) {
	if ($(this).hasClass('layui-icon-spread-left')) {
		$(this).removeClass('layui-icon-spread-left').addClass('layui-icon-shrink-right');
		$('#LAY_app').removeClass('layadmin-side-shrink');
		$('#LAY_app').removeClass('layadmin-side-spread-sm');
		if ($(window).width() < 992) {
			$('#LAY_app').addClass('layadmin-side-spread-sm');
		}
	} else {
		$(this).removeClass('layui-icon-shrink-right').addClass('layui-icon-spread-left');
		if ($(window).width() >= 992) {
			$('#LAY_app').addClass('layadmin-side-shrink');
		}
	}
});

// 菜单提示
var navTreeLayerIndex = null;
$(".layui-layout-body").on("mouseenter", ".layadmin-side-shrink .layui-nav-tree .layui-nav-item a", function() {
	if ($(this).data('title') != undefined && $(this).data('title') != '') {
		var color = $(this).parents('.layui-side-menu').css('background-color');
		navTreeLayerIndex = layer.tips($(this).data('title'), this, {
			tips: [2, color]
		});
	}
});
$(".layui-layout-body").on("mouseleave", ".layadmin-side-shrink .layui-nav-tree .layui-nav-item a", function() {
	if (navTreeLayerIndex != null) {
		layer.close(navTreeLayerIndex);
		navTreeLayerIndex = null;
	}
});

// 菜单遮罩层点击事件
$(".layadmin-body-shade").click(function(event) {
	if ($(this).css("display") != 'none' && $('#LAY_app').hasClass('layadmin-side-spread-sm')) {
		$(this).css("display, 'none");
		$('#LAY_app').removeClass('layadmin-side-spread-sm');
	}
	init_app_flexible();
});

// 初始化折叠左侧菜单按钮
function init_app_flexible() {
	if ($(window).width() >= 992) {
		if ($('#LAY_app').hasClass('layadmin-side-shrink')) {
			$('#app_flexible').removeClass('layui-icon-shrink-right').addClass('layui-icon-spread-left');
		} else {
			$('#app_flexible').removeClass('layui-icon-spread-left').addClass('layui-icon-shrink-right');
		}
	} else {
		if ($('#LAY_app').hasClass('layadmin-side-spread-sm')) {
			$('#app_flexible').removeClass('layui-icon-spread-left').addClass('layui-icon-shrink-right');
		} else {
			$('#app_flexible').removeClass('layui-icon-shrink-right').addClass('layui-icon-spread-left');
		}
	}
}

// 左侧菜单树鼠标点击事件
$('.layui-nav-tree dd').click(function(event) {
	var href = $(this).data('href');
	var title = $(this).data('title');
	navtab.addTab({
		url: href,
		title: title
	});
	if ($(window).width() < 992) {
		if ($('#LAY_app').hasClass('layadmin-side-spread-sm')) {
			$(this).css("display, 'none");
			$('#LAY_app').removeClass('layadmin-side-spread-sm');
		}
		init_app_flexible();
	}
});
//提示框点击事件
$('#tipDocReceive').click(function(event) {
	var href = $(this).data('href');
	var title = $(this).data('title');
	navtab.addTab({
		url: href,
		title: title
	});
	if ($(window).width() < 992) {
		if ($('#LAY_app').hasClass('layadmin-side-spread-sm')) {
			$(this).css("display, 'none");
			$('#LAY_app').removeClass('layadmin-side-spread-sm');
		}
		init_app_flexible();
	}
})
$('#tipMeetReceive').click(function(event) {
	var href = $(this).data('href');
	var title = $(this).data('title');
	navtab.addTab({
		url: href,
		title: title
	});
	if ($(window).width() < 992) {
		if ($('#LAY_app').hasClass('layadmin-side-spread-sm')) {
			$(this).css("display, 'none");
			$('#LAY_app').removeClass('layadmin-side-spread-sm');
		}
		init_app_flexible();
	}
})
$('.layui-nav-tree>li>a').click(function(event) {
	if ($('#LAY_app').hasClass('layadmin-side-shrink')) {
		layer.closeAll("tips");
		$('#LAY_app').removeClass('layadmin-side-shrink');
		init_app_flexible();
	}
});

// resize事件
$(window).resize(function() {
	init_app_flexible();
});

// ready事件
$(document).ready(function() {
	init_app_flexible();
});

// 帮助窗口
$(".layui-layout-body").on("click", ".tips-btn", function() {
	if ($(this).data('href') != undefined && $(this).data('href') != '') {
		layer.open({
			type: 2,
			title: 'layer mobile页',
			shadeClose: true,
			shade: 0.8,
			area: ['50%', '80%'],
			content: $(this).data('href')
		});
	}
});